/*
 * HelloWorld
 */

#ifndef HelloWorld_H_
#define HelloWorld_H_

#include "Robot/Robot.h"
#include "Timer/Timer.h"
#include "AvrUsart/AvrUsart.h"
#include "Packet.h"
#include "Blink/Blink.h"
#include "Stepper/Stepper4C.h"
#include "Stepper/Stepper4D.h"
#include "Servo/Servo.h"
#include "PropertyPacket.h"
#include "RemotePropertyServer.h"

/**
 * @brief Sample program with a blinking LED.
 */
class HelloWorld : public Robot, public Property {

private:
    // List of modules
    Blink 					mBlink;

    // Remote control
	AvrUsart 				mAvrUsart;
	Packet 					mPacket;
	PropertyPacket 			mBridge;
	RemotePropertyServer 	mServer;

public:
    /**
     * @brief Constructor.
     */
    HelloWorld();

    // Property definition
	PROPERTY_TYPE getType()        { return PROPERTY_TYPE_VOID; }
	const char*   getName()        { return "HelloWorld"; }
	const char*   getDescription() { return "Hello, World !"; }

    /**
     * \copydoc Robot::onStart()
     */
    void onStart();

    /**
     * \copydoc Property::getChild()
     */
    Property* getChild(unsigned char index);
};

#endif /* EVE_H_ */
